home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_ioctl.py < prev    next >
Text File  |  2005-10-18  |  1KB  |  42 lines

  1. import unittest
  2. from test.test_support import TestSkipped, run_unittest
  3. import os, struct
  4. try:
  5.     import fcntl, termios
  6. except ImportError:
  7.     raise TestSkipped("No fcntl or termios module")
  8. if not hasattr(termios,'TIOCGPGRP'):
  9.     raise TestSkipped("termios module doesn't have TIOCGPGRP")
  10.  
  11. try:
  12.     tty = open("/dev/tty", "r")
  13.     tty.close()
  14. except IOError:
  15.     raise TestSkipped("Unable to open /dev/tty")
  16.  
  17. class IoctlTests(unittest.TestCase):
  18.     def test_ioctl(self):
  19.         # If this process has been put into the background, TIOCGPGRP returns
  20.         # the session ID instead of the process group id.
  21.         ids = (os.getpgrp(), os.getsid(0))
  22.         tty = open("/dev/tty", "r")
  23.         r = fcntl.ioctl(tty, termios.TIOCGPGRP, "    ")
  24.         rpgrp = struct.unpack("i", r)[0]
  25.         self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
  26.  
  27.     def test_ioctl_mutate(self):
  28.         import array
  29.         buf = array.array('i', [0])
  30.         ids = (os.getpgrp(), os.getsid(0))
  31.         tty = open("/dev/tty", "r")
  32.         r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1)
  33.         rpgrp = buf[0]
  34.         self.assertEquals(r, 0)
  35.         self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
  36.  
  37. def test_main():
  38.     run_unittest(IoctlTests)
  39.  
  40. if __name__ == "__main__":
  41.     test_main()
  42.